/*
 * @Description: 用户信息 - 模型
 * @Author: DHL
 * @Date: 2022-04-02 14:02:17
 * @LastEditors: DHL
 * @LastEditTime: 2022-11-01 10:01:11
 */

import { BaseModel, PageParams, Params, Result, ResultPage } from '/@/model/baseModel'

/**
 * 用户信息对象
 */
export interface UserModel extends BaseModel {
  /** 编号 */
  id: string

  /** 租户ID */
  tenantId: string

  /** 平台ID */
  platformId: string

  /** 登陆名称 */
  loginName: string

  /** 登录密码 */
  pwd: string

  /** 姓名 */
  name: string

  /** 用户类型 */
  userType: string

  /** 手机号码 */
  phone: string

  /** 邮箱 */
  mail: string

  /** 用户状态（0，失效；1，生效） */
  status: string

  /** 是否第一次登录（0，否；1，是） */
  firstLogin: string

  /** 微信OPENID */
  openid: string

  /** 头像 */
  photo: string

  /** APP客户端唯一标识 */
  clientId: string

  /** 职务 */
  position: string

  /** 企业微信用户ID */
  cpUserId: string

  /** 机构ID */
  orgId?: string

  /** 机构名称 */
  orgParentNames?: string

  /** 角色集合 */
  roles: Array<UserRoleModel>

  /** 岗位集合 */
  posts: Array<UserPostModel>

  /** 直属主管 */
  directSupervisor: Nullable<string>
}

/**
 * 用户角色
 */
export interface UserRoleModel {
  /** 机构ID */
  orgId: string

  /** 机构名称 */
  orgName: string

  /** 角色ID */
  roleId: string

  /** 角色名称 */
  roleName: string

  /** 操作标记 */
  action: string
}

/**
 * 用户岗位
 */
export interface UserPostModel {
  /** 机构ID */
  orgId: string

  /** 机构名称 */
  orgName: string

  /** 岗位ID */
  postId: string

  /** 岗位名称 */
  postName: string

  /** 操作标记 */
  action: string
}

//////////////////////////////////////////////////
// 参数
//////////////////////////////////////////////////

/**
 * 查询参数
 */
export interface UserParams extends Params {
  /**
   * 关键字模糊查询
   */
  queryLikeStr?: string
}

/**
 * 分页查询参数
 */
export interface UserPageParams extends UserParams, PageParams {}

//////////////////////////////////////////////////
// 返回结果
//////////////////////////////////////////////////

/**
 * 分页查询返回结果
 */
export type UserPageResultModel = ResultPage<UserModel>

/**
 * 不分页查询返回结果
 */
export type UserListResultModel = Result<Array<UserModel>>

/**
 * 详情查询返回结果
 */
export type UserResultModel = Result<UserModel>
